#include "boost/python.hpp"
#include "compfwk/IComponent.h"

using namespace boost::python;
using compfwk::IComponent;

struct IComponentWrap : IComponent, wrapper< IComponent >
{
    void Update( void )
    {
        this->get_override( "Update" )( );
    }

    int GetEntityId( void )
    {
        return this->get_override( "GetEntityId" )( );
    }

    IComponent* Clone( int a_eid ) const
    {
        return this->get_override( "Clone" )( );
    }
};

BOOST_PYTHON_MODULE( compfwk )
{
    class_< IComponentWrap, boost::noncopyable >( "IComponent" )
        .def( "Update", pure_virtual( &IComponent::Update ) )
        .def( "GetEntityId", pure_virtual( &IComponent::GetEntityId ) )
        .def( "Clone", pure_virtual( &IComponent::Clone ) )
        ;
}